/**
 * @description 弹窗组件复用辅助方法，避免在页面设置多个难以维护的变量
 * @class upPopupShowTools
 * @constructor
 * @param {Object} attr 弹框属性
 * @param {boolean} show 是否显示弹框
 * @param {string} key 弹框唯一标识
 * @param {function} open 打开弹框方法
 * @param {function} close 关闭弹框方法
 */
export class upPopupShowTools {
    /**
     * @param {Object} attr 弹框属性，可以自定义在组件上绑定值
     * @param {boolean} show 是否显示弹框，在组件上直接绑定这个值即可
     * @param {string} key 弹框唯一标识，多个业务逻辑重复使用一个组件时可以通过key判断是那个操作
     */
    constructor(){
        this.attr = {}
        this.show = false
        this.key = ''
    }
    /**
     * 打开弹窗
     * @param {String} key 弹窗唯一标识，用于区分不同的弹窗
     * @param {Object} attr 弹窗属性，传递给弹窗组件的属性
     */
    open(key = '', attr = {}){
        Object.assign(this.attr, attr)
        this.key = key
        this.show = true
    }
    /**
     * 关闭弹框
     * @param {function} afterCall 拦截弹窗关闭的回调函数，返回true或false
     */
    close(afterCall){
        if(typeof afterCall == 'function' && !afterCall()){
           return
        }
        
        this.key = ''
        this.show = false
        // this.attr = {}
    }
}